home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 98 / Skunkware 98.iso / osr5 / sco / scripts / admin / news / chk_active next >
Encoding:
AWK Script  |  1997-08-26  |  1.5 KB  |  64 lines

  1. #!/usr/local/bin/gawk -f
  2. # @(#) chk_active.gawk 1.0 94/09/30
  3. # 94/05/11 john h. dubois iii
  4. # 94/06/27 Added help.
  5. # use gawk because it pays attention to changes to ARGV[]
  6.  
  7. BEGIN {
  8.     if (ARGC == 2 && ARGV[1] ~ /^[-+]h$/) {
  9.     print \
  10. "checkactive: check active file for errors.\n"\
  11. "Usage: checkactive [active-file]\n"\
  12. "If no active file is named, /usr/lib/news/active is used.\n"\
  13. "Each line is checked for the following errors:\n"\
  14. "Other than 4 fields.\n"\
  15. "Bad characters in any field.\n"\
  16. "Multiple instances of newsgroup name."
  17.     exit 0
  18.     }
  19.     if (ARGC < 2) {
  20.     ARGC = 2
  21.     ARGV[1] = "/usr/lib/news/active"
  22.     }
  23. }
  24.  
  25. {
  26.     if (NF != 4)
  27.     FileErr("Wrong number of fields: s/b 4, found " NF)
  28.     if ($1 !~ /^[-+&0-9a-zA-Z._]+$/)
  29.     FileErr("Bad newsgroup name")
  30.     if ($2 !~ /[0-9][0-9][0-9][0-9][0-9]/ || length($2) > 10)
  31.     FileErr("Bad value for last article (field 2)")
  32.     if ($3 !~ /[0-9][0-9][0-9][0-9][0-9]/ || length($3) > 10)
  33.     FileErr("Bad value for first article (field 3)")
  34.     if ($4 !~ /^x?[xmyn]$|^=/)
  35.     FileErr("Bad status (field 4)")
  36.     if ($1 in Groups)
  37.     FileErr("Duplicate group (also on line " Groups[$1] "):")
  38.     else
  39.     Groups[$1] = FNR
  40. }
  41.  
  42. function LineErr(S) {
  43.     ErrPrint("On line " FNR ": " S "\n>>> " $0)
  44. }
  45.  
  46. function FileErr(S) {
  47.     ErrPrint("On line " FNR " of " FILENAME ": " S "\n>>> " $0)
  48. }
  49.  
  50. function FileErrExit(S,ExitVal) {
  51.     FileErr(S)
  52.     Err = ExitVal
  53.     exit(ExitVal)
  54. }
  55.  
  56. #function ErrPrint(S) {
  57. #    print S | "cat 1>&2"
  58. #}
  59.  
  60. function ErrPrint(S) {
  61.     print S > "/dev/stderr"
  62.     close("/dev/stderr")    # flush output
  63. }
  64.